/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modulo3;

import Modelo.*;
import Modelo.DAL.Inspeccion_DAO;
import Acceso.Security;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author Patricia
 */
public class agregarInspeccionAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador","Gestionar Inspecciones"};

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        agregarInspeccionForm formBean = (agregarInspeccionForm) form;
        String fechaInspeccion = formBean.getFechaInspeccion();
        String motivo = formBean.getMotivo();
        String tipoInspeccion = formBean.getTipoInspeccion();
        String nombreEmpresa = formBean.getNombreEmpresa();
        nombreEmpresa = nombreEmpresa.trim();
        String rifEmpresa = formBean.getRifEmpresa();
        rifEmpresa = rifEmpresa.trim();
        String nroDeInspectores = formBean.getNroDeInspectores();
        String nroSalidaCampo = formBean.getNroSalidaCampo();
        String descripcion = formBean.getDescripcion();
        String actividad = formBean.getActividad();
        String recomendaciones = formBean.getRecomendaciones();
        ActionErrors errors = new ActionErrors();
        boolean error = false;
        Pattern p;
        Matcher m;

        if (fechaInspeccion == null || fechaInspeccion.equals("")) {
            errors.add("fechaInspeccion_insp_requerido", new ActionMessage("errors.fechaInspeccion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (motivo == null || motivo.equals("")) {
            errors.add("motivo_insp_requerido", new ActionMessage("errors.motivo_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (tipoInspeccion == null || tipoInspeccion.equals("")) {
            errors.add("tipoInspeccion_insp_requerido", new ActionMessage("errors.tipoInspeccion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        } else {
            if (tipoInspeccion.equals("Externa")) {
                if (nombreEmpresa == null || nombreEmpresa.equals("")) {
                    errors.add("nombre_empresa", new ActionMessage("errors.nombre_empresa_requerido"));
                    saveErrors(request, errors);
                    error = true;
                }
                if (rifEmpresa == null || rifEmpresa.equals("")) {
                    errors.add("rif_empresa", new ActionMessage("errors.rif_empresa_requerido"));
                    saveErrors(request, errors);
                    error = true;
                }
            }
        }

        if (nroDeInspectores == null || nroDeInspectores.equals("")) {
            errors.add("nroDeInspectores_insp_requerido", new ActionMessage("errors.nroDeInspectores_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (nroSalidaCampo == null || nroSalidaCampo.equals("")) {
            //formBean.setError("Debe colocar el número de salida de campo relacionada con la Inspección. Intente Nuevamente.");
            errors.add("nroSalidaCampo_insp_requerido", new ActionMessage("errors.nroSalidaCampo_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (descripcion == null || descripcion.equals("")) {
            //formBean.setError("Debe colocar una descripción para la Inspección. Intente Nuevamente.");
            errors.add("descripcion_insp_requerido", new ActionMessage("errors.descripcion_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (actividad == null || actividad.equals("")) {
            //formBean.setError("Debe colocar las actividades realizadas en la Inspección. Intente Nuevamente.");
            errors.add("actividad_insp_requerido", new ActionMessage("errors.actividad_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (recomendaciones == null || recomendaciones.equals("")) {
            //formBean.setError("Debe colocar las recomendaciones para esta Inspección. Intente Nuevamente.");
            errors.add("recomendaciones_insp_requerido", new ActionMessage("errors.recomendaciones_insp_requerido"));
            saveErrors(request, errors);
            error = true;
        }

        if (error) {
            return mapping.findForward(FAILURE);
        }

        Inspeccion ins = new Inspeccion();
        ins.setFechaInspeccion(fechaInspeccion);
        ins.setMotivo(motivo);
        ins.setTipoInspeccion(tipoInspeccion);
        ins.setNombreEmpresa(nombreEmpresa);
        ins.setRifEmpresa(rifEmpresa);
        ins.setNroDeInspectores(nroDeInspectores);
        ins.setNroSalidaCampo(nroSalidaCampo);
        ins.setDescripcion(descripcion);
        ins.setActividad(actividad);
        ins.setRecomendaciones(recomendaciones);

        Inspeccion_DAO conexionInspeccion = new Inspeccion_DAO();

        if (!conexionInspeccion.insertarInspeccion(ins)) {
            errors.add("insp_fallido", new ActionMessage("errors.insp_fallido"));
            saveErrors(request, errors);
            return mapping.findForward(FAILURE);
        }

        return mapping.findForward(SUCCESS);
    }
}
